package ulht.ia;


import java.util.HashMap;
import Interface.*;

/**
 *
 * @author Administrador
 */
public class Turmas {
    // formato da lista é "código", "identificador da turma"
    private HashMap<String, String> listaTurmas = new HashMap<>();

    /**
     * Devolve um hashmap com a lista de turmas
     * @return HashMap<String, String> 
     */
    public HashMap<String, String> getListaTurmas() {
        return listaTurmas;
    }

    /**
     * Carrega um hashmap para a lista de turmas
     * @param HashMap<String, String> listaTurmas 
     */
    public void setListaTurmas(HashMap<String, String> listaTurmas) {
        this.listaTurmas = listaTurmas;
    }

    /**
     * Carrega os valores por defeito: 6 turmas
     */
    private void loadDefaults(){
        this.listaTurmas.put("00", "sem turma");
        this.listaTurmas.put("01", "T1");
        this.listaTurmas.put("02", "T2");
        this.listaTurmas.put("03", "T3");
        this.listaTurmas.put("04", "T4");
        this.listaTurmas.put("05", "T5");
        this.listaTurmas.put("06", "T6");
    }
    
    /**
     * Adiciona uma turma à Lista de Turmas
     * 
     * @param codigo
     * @param nome 
     */
    public void addTurma(String codigo, String nome){
        this.listaTurmas.put(codigo, nome);
    }
    
    /**
     * Remove uma Turma da lista de Turmas
     * 
     * @param codigo
     * @return True se removido, False se código nao existir
     */
    public boolean removeTurma(String codigo){
        if (this.listaTurmas.containsKey(codigo)){
            this.listaTurmas.remove(codigo);
            return true;
        }
        return false;
    }
    
    /**
     * Edita uma turma (remove a turma existente e cria uma nova)
     * 
     * @param codigo
     * @param novoCodigo
     * @param nome
     * @return 1 se Ok, 0 se o novo código já existe, -1 se o código não existe
     */
    public int editTurma(String codigo, String novoCodigo, String nome){
        if (novoCodigo.equals(codigo)){
            if (this.listaTurmas.containsKey(codigo)){
                this.listaTurmas.remove(codigo);
                this.listaTurmas.put(novoCodigo, nome);
                return 1;
                } else {
                    return -1;
                }
        } else if (this.listaTurmas.containsKey(codigo)){
            if (!this.listaTurmas.containsKey(novoCodigo)){
                this.listaTurmas.remove(codigo);
                this.listaTurmas.put(novoCodigo, nome);
                return 1;
            } else {
                return 0;
            }
        }
        return -1;
    }

    /**
     * Constructor por defeito
     */
    public Turmas() {
        this.loadDefaults();
    }
    
    /**
     * Constructor com lista de turmas por parâmetro
     */
    public Turmas(HashMap<String, String> listaTurmas){
        this.setListaTurmas(listaTurmas);
    }
}
